#include <stdio.h>
#include <unistd.h>
#include<stdlib.h>

int un_g_val;//未初始化全局数据
int g_val=100;//已初始化全局数据

int main(void)
{
    printf("test:%p\n",main);//验证代码区：函数名表示其地址，函数是代码
    printf("init:%p\n",&g_val);//验证全局区：已初始化全局区
    printf("unint:%p\n",&un_g_val);//验证全局区：未初始化全局区

    char*p=(char*)malloc(16);
    printf("heap:%p\n",p);//验证堆区：malloc在堆上申请空间，将对应地址存储在p变量中，*p指向堆上的地址空间，
    printf("stack:%p\n",&p);//验证栈区：p变量本身在在main函数(栈)中创建，故&p获得的是栈上的地址。
    return 0;
}
